#pragma once
#include "WareTypes.h"
#include "ISceneEntity.h"
#include "CMatrix4.h"

BEGIN_WARE

class ISceneNodeCamera;
class IRenderQueue;
class IResourceManager;
class IEffectUnitProp;
class IGraphic;

class IEffectUnit
{
public:
	virtual ~IEffectUnit() {}
	virtual void				CullVisibleObjects( IGraphic* pGraphic, ISceneNodeCamera* pCamera ) = 0;
	virtual VBOOL				Update( IGraphic* pGraphic, const CMatrix4& MatParent, uint32 uCurTime ) = 0;
	virtual VBOOL				Render( IGraphic* pGraphic, uint32 uCurTime ) = 0;
	virtual VBOOL				Create( IResourceManager* pResMgr ) = 0;
	virtual IEffectUnitProp*	GetEffectUnitProp() = 0;
	virtual	void				SetEffectUnitProp( IEffectUnitProp* pProp ) = 0;
};

END_WARE